23

» WarCraft 3 / Движение без поворота

Похожие вопросы:

ответ
мне мои вопросы кажуться легко решаемыми
это только кажется
реально это тот ещё геморрой
попробуй сам реализовать пункт 4 (имхо самый простой из всего)
ответ
Всё, разобрался, вопрос снимаю)

23

» WarCraft 3 / Кнопка постройки здания

Похожие вопросы:

ответ
Ухаха. Парень, ознакомься, что такое утечки, прикрепление в помощь.
ответ
На ГУИ это делается без всякого custom script, ищешь раздел Игра и там Force UI Key.
Вообще, в ГУИ же поиск текста есть. Мог бы сам найти.
ответ
Yury13, вроде должно нормально работать в мультиплеере. Но возможны подводные камни.
Вот отредактировал, откомментировал каждую строчку. Красиво и норм. Теперь можно отследить открытие меню или закрытие (сворачивание). Если переделать хэш-таблицу и на хэндл записывать данные.
Есть недостаток с отрядами: когда выделяешь несколько юнитов, и переключаешь на раба. То рабом можно вызвать меню. А затем если взять и кнопкой Tab переключить например на след выделенного в отряде, то система до сих пор будет считать, что меню остается открытой (система: юнит то выделен, все впорядке). Тогда у вас работник будет подсвечиваться радиус, в то же время вы переключены на другого юнита в отряде - что есть не очень хорошо. Я не смог ничего такого найти с переключениями, даже не знаю как это исправить (возможно придется отказаться работать в группе во время стройки). Вроде драколич в мемхаке давно скидывал код на выделенного юнита, могу скинуть? но мемхаком больше не хочу заниматься
ответ
Есть другой способ скрыть ВСЕ кнопки.
Buttonpos=0,-11
не обязательно юзать текстовик, чтобы скрыть меню, можно попробовать в самих абилках "строительство" задать положение x,y - 'AHbu'/'AObu'/'AUbu'/'AEbu'/'AGbu'/'ANbu'

23

» WarCraft 3 / Игровые зоны.

Похожие вопросы:

ответ
Kind Ram:
Если у юнита тип перемещения включён на "нет", но есть скорость перемещения, он будет перемещаться сквозь любые объекты. Если же у него перемещение стоит "летающий", то его могут заблочить только воздушные юниты и воздушные блокираторы пути. Но в случае с летающим типом, это станет заметно как он "плавно" взбирается на вертикальные стены рельефа.
ответ
orc01, хм... Ладно, попробую сейчас.
Всё, нашёл как нужно было сделать
Через то же что и первый раз делал, только выбрал всех юнитов игрока красного, то есть - одного героя. И сразу все стало нормально)
ответ
8gabriel8, стандартные порталы как раз включаются триггером, так же триггерно им можно назначать области телепорта, так же они не ломают карту путей.
Насчет упираются в здание, карту путей ставь от портала, физ размер в 0.
ответ
Альфа канал (есть статья на сайте), нестандартная шарообразная модель неба (модель есть на сайте) и правильный туман.
ответ
Так что лучше теперь юзать?)
Отключаемый триггер с общим событием, который включается когда есть нужные юниты и отключается когда их нет.

23

» WarCraft 3 / Импорт текстуры с помощью Retera's Model Studio

Похожие вопросы:

ответ
Vova47, отредактируй путь к текстуре при помощи Mdlvis.
ответ
Скорее всего никак. Если в импорте указать стандартный путь текстуры, то она заменится и будет недоступна.
ответ
  1. Узнаёшь точный путь стандартной текстуры, которую ты будешь заменять на свою.
Это можно сделать используя любой MPQ-вьювер, вскрывая War3.mpq ты начинаешь поиск в папке TerrainArt.
  1. Импортируешь текстуру по этому пути, изменяя имя новой текстуры, на имя заменяемой. И готово )
У меня есть пример, где я это уже делал. В этой карте:
ответ
~8gabriel8:
Оригинально) Круто, что работает.
По идее нужно не mdx открывать в Блокноте, а пересохранить модель в формат mdl и открывать в Блокноте её. Файлы tga являются просто другим форматом текстур, который используется в игре. Если слишком много весят, можешь перевести в blp, но считается, что у tga качество получше.
ответ
все файлы и их пути которые ты указал в менеджере импорта будут заменять такие же файлы по тому же пути которые есть в архиве игры

23

» WarCraft 3 / Импорт DISBTN

Похожие вопросы:

ответ
Пути импорта хранятся внутри карты в файле .imp, который имеет бинарный формат. Соответственно, чтобы это заработало, надо добавить кнопку в меню по нажатию которой будет происходить импорт через отдельную тулзу:
  • импортирует файлик в mpq архив карты
  • извлекает файлик .imp
  • добавляет настройки этой кнопки в этот файлик
  • импортирует файлик .imp
Вот и все, так что можете подучить какой-нибудь язык простенький, хотя бы делфи и вперед!)
ответ
~8gabriel8:
BattleMaster, укажи имена:
BTNBT
DISBTNBT
Потом в редакторе объектов проверь путь к BT, скорее всего надо будет поменять на BTNBT.

23

» WarCraft 3 / Массивы и номера игроков

Похожие вопросы:

ответ
Получите, распишитесь.
немного кода
globals
  integer udg_p_i = 1
  player array udg_p
endglobals
function int takes nothing returns nothing
local integer i = 1
  loop
    exitwhen i  > 10
    if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
      set udg_p[udg_p_i]=Player(i)
      set udg_p_i = udg_p_i + 1
    endif
    set i = i + 1
  endloop
endfunction
function cd takes nothing returns nothing
  local integer i = 1
  local integer cap = 0
  loop
    exitwhen i > udg_p_i
    set cap = (5+LoadInteger(udg_hash, GetHandleId(udg_Player[GetPlayerId(udg_p[i])]), 2))
    if GetHeroXP(udg_Player[GetPlayerId(udg_p[i])) < cap then
      call AddHeroXP( udg_Player[GetPlayerId(udg_p[i]), 20, false )
    endif
    set i = i + 1
  endloop
endfunction
Я так понял что статьи не помогут.
функцию int() вызови при инициализации
P.S.
Помогите сделать так, чтобы действия выполнялись не по циклу
ахахах, тогда закомменти пару строк)
тебе нужно создать соответствующие глобалки вручную
функция cd() это и есть функция которая должна быть в твоем действии
Если что непонятно, спрашиваем -_-
ответ
Одна и та же переменная в одном вызове функции не может принимать разные значения. Почему нельзя использовать две переменные?
Я вообще не очень понимаю, что ты хочешь сделать такой функцией. Опиши ситуацию, пожалуйста.
ответ
Вопрос решён. Не нужно ничего сортировать. Мне нужно было 3 первых места. Я просто в цикле сравнимал позицию данного игрока в ледербоарде с нужной мне позицией.
ответ
Должно работать:
function GetRandomPlayerIndex takes nothing returns integer
    set udg_Buf_A = 0
    set bj_forLoopAIndex=0 //red
    set bj_forLoopAIndexEnd=10  //light blue
    loop
        exitwhen(bj_forLoopAIndex>bj_forLoopAIndexEnd)
        if(GetPlayerSlotState(Player(bj_forLoopAIndex))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerController(Player(bj_forLoopAIndex)))==MAP_CONTROL_USER)and(udg_AccEmpPlayer[bj_forLoopAIndex]==false)then
                set udg_PlayersPlay[udg_Buf_A]=Player(bj_forLoopAIndex)
                set udg_Buf_A=(udg_Buf_A+1)
        endif
    set bj_forLoopAIndex=bj_forLoopAIndex+1
    endloop
    set udg_Random=GetRandomInt(0,udg_Buf_A)
    set udg_RndPlayer=udg_PlayersPlay[udg_Random]
    return udg_RndPlayer
endfunction
ответ
Это не удаление, а присвоение. Ты смотрел реализацию из первого комментария?

Сделал, написал комменты, разберёшься.

23

» WarCraft 3 / Летают части моделей.

Похожие вопросы:

ответ
Причина: причин было много, а я искал лишь одну
Самыми распространёнными оказались элементарные ошибки в коде, отсутствие параметров, параметры не того типа данных (привет динамическая типизация) или лишние параметры, из за чего происходили "рандомные рассинхроны при обрыве потока"
Огромное спасибо пользователю prog, что откликнулся и смог найти ошибки, а нашёл он их при помощи языкового сервера sumneko lua для VScode

23

» WarCraft 3 / Высота камеры

Принятый ответ
Похожие вопросы:

ответ
pas logique:
Гигамон- Спасибо!
В триггерах тип действий "Камера". Если конкретно расстояние до цели надо поменять, то "Камера - Установить Поле Камеры (Время)" ("Камера - Set Camera Field (Timed)").
ответ
Вероятнее всего, ты повышаешь камеру выше скайбокса.
Вероятные решения проблемы:
а) Уменьшить самих юнитов и стилизовать ланд под маленькие модели.
б) Вставить нестандартный скайбокс с огромным размером.
(я бы выбрал первый вариант, потому что он круче)
ответ
CRASHmaster:
Привет. Посмотри эту карту (версию 4.00): xgm.guru/forum/showthread.php?p=355988, в ней вроде подобная проблема решена. Но я подробно не изучал сам.
к сожалению, не решена. Чем выше юнит забирается на холм, тем выше камера становится над юнитом.
ответ
Ну так берем и делаем, в чем проблема то? Элементарный триггер же? Взяли подрстроку из введенного в чат сообщения и настроили камеру.

23

» StarCraft 2 / Как создать мод

Похожие вопросы:

ответ
сначала создай библиотеку, а уже в библиотеке создавай триггеры.
vk.com/z_lamberg пиши, если вопросы есть

23

» WarCraft 3 / Система войн при нападении на игрока.

Похожие вопросы:

ответ
Meddin, меняй цели заклинания
всё работает просто у тебя руки не от туда
аффтару
без триггеров никак
делаем пустышку на основе канала
и при касте проверяем является ли цель врагом
если да то наносим урон
если нет то хилим
подробнее можешь прочесть там
ответ
никак, ты говоришь о несовместимых модификаторах
ответ
В условии триггера прописать, что входящий юнит (Entering unit) == тот юнит, который нужен.
ответ
Вам нужно изучить в редакторе звука как сделаны озвучки стандартных юнитов, тогда поймете по какому принципу формируются пакеты озвучки из отдельных файлов. Самый простой вариант - менять дефолт на импорт, карта Funny Bunny egg hunt от близзардов в помощь, это наглядное пособие по импорту озвучки и не только.
ответ
Frostfall, тебе уже показывали, как это сделать вот здесь.

Сделал ещё способ, не через апгрейд, а через морф.
С тёмным будет так же, но скорее всего не нужно будет исправлять анимацию.

Я хотя бы правильно начал?
Да.

А что, разве уничтожить группу и почистить - разное для триггера?
Конечно, очистить группу - сделать группу пустой, а уничтожить - удалить сам объект типа "группа". Уничтожение в GUI недоступно, только через Custom Script, смотри карты, что я кидал.

23

» WarCraft 3 / Пища и призванные юниты

Похожие вопросы:

ответ
BrEd Pitt, делать через найм юнитов или удалять призванного юнита если превышен лимит еды
а у абилки сбрасывать кд
и выдавать чтото наподобие "нужно построить зикурат"

23

» WarCraft 3 / Текстуры в Reforged.

Похожие вопросы:

ответ
плохо ищете
ответ
Нет, туман выглядит таким образом всегда, я долго думал, что я не так делаю с туманом, в игре все норм
ответ
Получается, в триггерах в разделе "видимость" можно отключить весь террейн, но это так себе варик
После чего замостить всё ruined ground 4x4 декорацией
ответ
Пути все старые (такие же как и у 126, но для HD с припиской HD MOD), для открытия нужен реф (можно даже не покупать) и casc view
ответ
А много ли юнитов будут с хп баром? если серьёзно то решения нет и фрейм не найти этот, оно зашито в недра движка. Но опять таки Disable pre-selection вариант всё таки, если потом отрисовать кастомные хп бары через специальную модель, если она будет эффектом, то это не вызовет никакой доп нагрузки даже у 100 юнитов.

23

» WarCraft 3 / Почему может не работать триггер?

Похожие вопросы:

ответ
not_name:
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
ответ
Предлагаю для начала разбить действие на кучу мелких. Все расчёты разбить на мелкие и разнести по переменным, выводя на экран. А там и видно будет, ибо на скрине даже не вся строка видна.
ответ
Скорее всего условия не выполняются. Нужно выводить на экран сообщения и смотреть, какие вывелись.
ответ
Потому что предмет сначала удаляется. Его больше нет в слоте.
А потом спрашивается, сколько зарядов у предмета в слоте. Но там вообще нет предмета.

23

» WarCraft 3 / Найм другому игроку

Похожие вопросы:

ответ
NiktoTakoy, существует множество приказов
полного списка приказов не существует но есть частичный список в папке с джнгп (lib)
id приказов используются в спец функциях которые оканчиваются на ById (в гуи их нету вроде бы)
при желании ты можешь узнать айди нужного тебе приказа с помощью триггера предоставленного Mrachny

23

» Администрация XGM / Дата заданий

Похожие вопросы:

ответ
Я думаю стоит об этом спросить самого дока)
ответ
Обновил функционал в полной форме создания задачи + разлочил значение (кол-во часов)

23

» WarCraft 3 / Отображение юнита игрока

Похожие вопросы:

ответ
Можно выключить подсвечивание юнитов при наведении курсора:
call EnablePreSelect(false,false)
Имена игроков пропадут, но вместе с ними исченут имена самих юнитов и круги выделения под ними.
ответ
мне кажется то, что я хочу сделать невозможно из-за самого варика. так не было предназначено.
буду искать другой путь
ответ
Добавь компьютерного игрока на нужный слот
ответ
Steal nerves, насколько я понимаю, автору вопроса нужно совсем другое - он хочет чтобы у юнита было одновременно несколько улучшений на атаку, не важно откуда они берутся и даже не важно могут ли они быть активны одновременно. А проблема вся в циферке уровня улучшения на иконке атаки, которая начинает себя некорректно вести когда на атаку влияет больше одного улучшения.

можно просто исследование других рас насильно через триггер давать
Или создать копию улучшения для нейтралов и выдавать его триггерно при изучении родного, а циферку у юнита завязать именно на это улучшение. (одно улучшение для нейтралов, выдавать при изучении любого из соответствующих ему рассовых улучшений).
ответ
есть три события: начато исследование, отменено и завершено исследование.
запустить таймер в начале исследования. и из него узнать процент. есть нативки, позволяющие узнать: запущенное время, пройденное время и оставшее время до завершения
процент = пройденное время/запущенное время
при отмене или завершении удалить таймер
примерно как тут здесь даже проще, чем выяснить реальный процент стройки хуманов

23

» WarCraft 3 / Оптимизация.

Похожие вопросы:

ответ
Таких багов много, почему то оптимизатор берет данные из слк таблиц игры на часть объектов, пробуй wc3ultimate opt, на хайве выложена... Мб кто уже и новый виджитайзер запилил.
ответ
Закрываю вопрос
Нашел нормальный блокнот и через него отредактил
ответ
Тут скорее всего еще проблема с кодом карты, деоптимизаторы не восстанавливают данные на 100% и ошибки будут почти всегда, 100% рабочий способ - создавать объекты с нуля в карте руками, с теми же id и параметрами что в карте которую вы хотели восстановить...
ответ
В первую очередь, нужно выборочно оценивать и уменьшать размер текстур и количество мипмапов. Например, есть текстура кровли, которая в игре занимает существенную часть видимого пространства в декорациях, которая в целом как-то влияет своим качеством на восприятие картинки, и есть текстура какого-нибудь топорика, который держит в своих руках один из юнитов, и толком не разглядеть мелкие детали топорика. Но зачастую бывает так, что текстура топорика имеет размер 256х256 px, а текстура кровли 64х64 px.
Другой пример с иконками и другими элементами интерфейса, где не требуется более двух самых крупных мипмапов, а остальные можно благополучно удалить, т.к. оин почти ни при каких условиях не будут изображены.
Во-вторую очередь, нужно оптимизировать анимации нестандартных моделей юнитов. У нас до сих пор многие ничего не знают об этом, хотя уже есть инструмент, который делает это автоматически. Вот только Wiedzmin, автор тулзы пока ее не опубликовал, а пора бы дать всем ее пощупать.
Кроме оптимизации анимаций, следует применять все остальные способы, реализованные в mdlvis - это просто галочки, которые почистят прочий мусор, ничего сложного.
ответ
В Mdlvis используешь: Удаление свободных вершин, Удаление не связанных костей, Удаление ничейных КК, Линеаризация анимации. (настоятельно не рекомендую использовать параметр "Увеличение сжимаемости" как правило эта опция может удалять вершины тем самым испортив геометрию модели)
Переходим в Warcraft Model Editor, вкладка Редактировать-> Рассчитать границы
Сохраняем.
Как правило после расчета границ придется настраивать событийные объекты из за того что программа может сместить ключевые кадры, то есть нужно заново назначить им ключевые кадры например: следы от башмаков на земле должны быть видны только в анимации "Walk"
Переходим во вкладку Окна-> редактор узлов настраиваем видимость.
Сохраняем.
Опять открываем в WME сохраненную модель переходим во вкладку Менеджер текстур.
Там удаляем не используемые текстуры. Если не помнишь какие, то последовательно пытаешься удалить каждую текстуру, если WME ругается значит она используется если нет то ты нашел не нужную текстуру. Как правило после удаления поверхностей может остается ее анимация тут уже все ручками нужно удалять. Переходим во вкладку "Редактор анимации поверхности" и ищем не используемые удаляем.
Скачиваем MDX/M3 Optimizer c Хайва.
Разархивируем в отдельную папку, создаем там bat-ик, открываем блокнотом (перед этим копируем полный адрес папки, например: C:\Users\Asssssvi\Desktop\Warcraft Program\MDXM3 Optimizer)
вставляем следующее copt_win -p 32 -t 0.001 "адрес папки" и сохраняем.
скидываем в папку файл модели и перемещаем ее прямо на bat -ик должно получится "имя файла v2. mdx"
Этой программой мы удалили "бесполезные ключевые кадры" которые занимают лишнее(нет) место.
На этом в принципе все.
Помни что у каждой анимации должен быть первый и последний кадр(если кость была задействована в середине анимации и у нее будет отсутствовать начальный и последний кадр, то это будет ошибка, причем позиция и ротация точки это два разных параметра, то есть если ты изменил положение кости (переместил) то это перемещение должно иметь начальный и последний кадр так же и с ротацией они отдельны друг от друга, если этого нет, то анимация будет не коректно работать.
А на Хайвовском "Sanity test" будут сыпаться ошибки, кстати если все нормально то он должен показать серую надпись "Passed" то тогда можешь считать что она оптимизирована.

23

» WarCraft 3 / Почему может не работать триггер?

Похожие вопросы:

ответ
not_name:
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
ответ
Предлагаю для начала разбить действие на кучу мелких. Все расчёты разбить на мелкие и разнести по переменным, выводя на экран. А там и видно будет, ибо на скрине даже не вся строка видна.
ответ
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.

Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
ответ
Скорее всего условия не выполняются. Нужно выводить на экран сообщения и смотреть, какие вывелись.
ответ
Потому что предмет сначала удаляется. Его больше нет в слоте.
А потом спрашивается, сколько зарядов у предмета в слоте. Но там вообще нет предмета.

23

» WarCraft 3 / Как сделать такой триггер?

Похожие вопросы:

ответ
никак, ты говоришь о несовместимых модификаторах
ответ
Ну еще один вариант... Как я понял ты в начале игры выбираешь себе героя покупая в таверне. Так вот: Тебе понадобиться сделать 2 области.
И подставить свои значения в этот триггер (место Playble map area выбрать область в какую хочешь переместить героя)
Когда ты покупаешь героя он " входит в область" вокруг таверны (не забудь ее сделать).Дальше он перемещается в указанную тобой другую область (ее тоже не забудь). И я не добавил одно действие убить того кто покупал героя (у меня был светлячок).
Вроде бы все объяснил.
Если что не понятно пиши мне в ЛС.
ответ
Ну суть в том что при доведении здания до разрушения (смерти) оно переходит во владение тому игроку, который его и добил. Проще говоря - твой ластхит по вражескому зданию передаёт его тебе.
По-хорошему первое что надо сделать - запретить союзникам атаковать свои здания (или хотя бы столицы, о которых и идёт речь).
Второе - при получении зданием урона проверять кто его нанёс, если друг - отхиливать на весь урон, если враг - проверять не будет ли этот урон смертельным, и если ДА - давать столько хп, сколько надо что бы здание осталось в живых (обычно это урон + 1 хп). И при этом передавать юнита во владение тому игроку, который владеет юнитом который является источником этого урона.
По желанию можно отхилить здание полностью (на 100% своего хп)
ответ
PT153:
Есть. Условие -> сравнение целочисленной.
Можно скрин например?
решил логично поискать и нашёл.
ответ
Сделал сам

23

» WarCraft 3 / Помощь с условием тригера

Похожие вопросы:

ответ
Если по игроку то массив переменных по игроку, если прям каждого конкретного героя каждого игрока - то через custom value или прочий регистратор юнитов.
Чета типа так, для ознакомления с CV